﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Eacademy.Domain.Models;

namespace Eacademy.Domain.Abstractions
{
    public interface ISubjectRepository
    {
        List<SubjectCompactViewModel> GetSubjects();

        List<SubjectCompactViewModel> GetSubjectsForStudent(int userid);


        List<SubjectCompactViewModel> GetSubjects(int pageIndex, int pageSize,int userid, SubjectListFilterViewModel parameters,
                                                  out int totalCount, bool count = true);

        List<SubjectCompactViewModel> GetSubjectsByMentorId(int pageIndex, int pageSize, int mentorId,
                                                            SubjectListFilterViewModel parameters,
                                                            out int totalCount, bool count = true);

        List<SubjectCompactViewModel> GetSubjectsByStudentId(int pageIndex, int pageSize, int userId,
                                                                    SubjectListFilterViewModel parameters,
                                                                    out int totalCount, bool count = true);


        Boolean DeleteSubject(int id);

        Boolean AddSubject(AdminSubjectsViewModel adminSubjectsViewModel);
        Boolean UpdateSubject(AdminSubjectsViewModel adminSubjectsViewModel);
        Boolean SetSubjectEnrolled(int subjectId, int mentorId, int userId);
        void ApproveSubjecEnroll(int subjectEnrolledId);

        AdminSubjectsViewModel GetSubjectBySubjectId(int id);
    }
}